#include <iostream>
using namespace std;

// 方案一：将析构函数私有化

class HeapOnly 
{
private:
~HeapOnly() {} // 私有化析构函数

public:
//1.提供一个静态的公共接口来销毁实例
static void DestroyInstance(HeapOnly* instance) 
{
     delete instance;
}

// 2.提供一个非静态公共接口来销毁实例
void Destroy()
{
	delete this;
}
};

int main()
{
	HeapOnly* php = new HeapOnly;
	// 1.使用静态的公共接口来销毁实例
	//HeapOnly::DestroyInstance(php);
	//php->DestroyInstance(php);

	// 2.使用非静态的公共接口来销毁实例
	php->Destroy();

	// err,不能在栈上创建对象
	// HeapOnly hp; 
	return 0;
}


